#pragma once
#ifndef _ROAD_H_
#define _ROAD_H_

#include <string>
#include <vector>
#include "PlanView.h"
#include "Lanes.h"
#include "Link.h"

namespace OpenDrive {

	class Road
	{
	public:
		Road(std::string name, float length, std::string id, std::string junctionId);
		~Road();
		Road() {}
		Lanes&		getLanes() { return lanes; }
		void		setLanes(const Lanes &l);
		PlanView&	getPlanView() { return planview; }
		void		setPlaneView(const PlanView &p);
		Link&		getRoadLink()  { return roadLink; }
		std::string getId() const{ return id; }
		std::string getJunctionId()const { return junctionId; }
		float		getLength() const{ return length; }
		void		setRoadLink(const Link &rl);
		std::string getName() const{ return name; }
		bool		laneExist(int laneSectionId, int laneId)const;
		Lane&		getLane(int laneSectionId, int laneId);

	private:

		std::string	name;
		float		length;
		std::string id;
		std::string junctionId;
		Lanes		lanes;
		PlanView	planview;
		Link		roadLink;

	};

}

#endif //_ROAD_H_